今天發現講了這麼久的資安,但卻從來沒有做過CTF相關的內容,突然覺得這也是需要被提到的一部份。因此,今天的內容就來講講CTF。
CTF,是 Capture The Flag的簡寫,中文翻譯大家稱為奪旗賽。可以簡單理解成駭客大賽。
現在許多電腦攻防的比賽採用了奪旗的概念,每一個參賽隊伍都有一個需要保護的伺服器,但這個伺服器卻有著許多漏洞。參賽者必須要有能力分析系統漏洞,利用該漏洞撰寫攻擊程式,進而對其他隊伍發動攻擊。若攻擊成功了,可以從被攻擊隊伍中取得一個象徵該隊的旗幟(Flag)或是金鑰,並上傳給主辦單位的伺服器後,就可以確認該次攻擊成功得分。
現在主流的CTF競賽主要有四種,Jeopardy 解題賽、Attack & Defense、King of Hill、(CGC),今天先介紹其中一種。
解題賽很常見,通常是CTF競賽初賽會採用這種模式,而解題賽底下又細分為幾個類型的題目
misc
綜合題,通常是結合許多類型的解題技巧,因為無法單獨歸類在特定題型,所以丟在這個類群。
pwn
發音為「碰!」, 參賽者要透過靜態與動態分析來找出該程式的弱點。例如: Buffer overflow、命令注入等,在遠端伺服器利用漏洞來執行任意指令,進一步取得遠端伺服器的金鑰。
bin (revsersing)
需要靠逆向工程來解題的類型,通常由主辦方給一個或多個Binary, 過關所需要的Key通常加密藏在執行檔裡,要將程式逆向分析出後才能找出。但主辦方給的檔案格式有時也不限於執行檔,會出現各種奇怪的檔案格式。
web
web比較難透過論述來概括出定義,但可以用解題方法來歸類,常見的攻擊法大概就是 SQL Injection / Command Injection / Cookie / Race Condition等等。
crypto
主辦方會給加密過的密文、加密程式,參賽者必須手動解密,或透過分析加解密演算法甚至需要找出演算法的弱點來破解出真正的明文。
Forensics
網路鑑識類型的題目,主辦方會要求參賽者從封包、Log、 Memory Dump、Disk Image、VM image等鑑識出隱藏在之中的金鑰。